home *** CD-ROM | disk | FTP | other *** search
- C
- C ..................................................................
- C
- C SUBROUTINE DDET5
- C
- C PURPOSE
- C TO COMPUTE A VECTOR OF DERIVATIVE VALUES GIVEN A VECTOR OF
- C FUNCTION VALUES WHOSE ENTRIES CORRESPOND TO EQUIDISTANTLY
- C SPACED ARGUMENT VALUES.
- C
- C USAGE
- C CALL DDET5(H,Y,Z,NDIM,IER)
- C
- C DESCRIPTION OF PARAMETERS
- C H - DOUBLE PRECISION CONSTANT DIFFERENCE BETWEEN
- C SUCCESSIVE ARGUMENT VALUES (H IS POSITIVE IF THE
- C ARGUMENT VALUES INCREASE AND NEGATIVE OTHERWISE)
- C Y - GIVEN VECTOR OF DOUBLE PRECISION FUNCTION VALUES
- C (DIMENSION NDIM)
- C Z - RESULTING VECTOR OF DOUBLE PRECISION DERIVATIVE
- C VALUES (DIMENSION NDIM)
- C NDIM - DIMENSION OF VECTORS Y AND Z
- C IER - RESULTING ERROR PARAMETER
- C IER = -1 - NDIM IS LESS THAN 5
- C IER = 0 - NO ERROR
- C IER = 1 - H = 0
- C
- C REMARKS
- C (1) IF IER = -1,1, THEN THERE IS NO COMPUTATION.
- C (2) Z CAN HAVE THE SAME STORAGE ALLOCATION AS Y. IF Y IS
- C DISTINCT FROM Z, THEN IT IS NOT DESTROYED.
- C
- C SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
- C NONE
- C
- C METHOD
- C IF X IS THE (SUPPRESSED) VECTOR OF ARGUMENT VALUES, THEN
- C EXCEPT AT THE POINTS X(1),X(2),X(NDIM-1) AND X(NDIM), Z(I)
- C IS THE DERIVATIVE AT X(I) OF THE LAGRANGIAN INTERPOLATION
- C POLYNOMIAL OF DEGREE 4 RELEVANT TO THE 5 SUCCESSIVE POINTS
- C (X(I+K),Y(I+K)) K = -2,-1,...,2. (SEE HILDEBRAND, F.B.,
- C INTRODUCTION TO NUMERICAL ANALYSIS, MC GRAW-HILL, NEW YORK/
- C TORONTO/LONDON, 1956, PP. 82-84.)
- C
- C ..................................................................
- C
- SUBROUTINE DDET5(H,Y,Z,NDIM,IER)
- C
- C
- DIMENSION Y(1),Z(1)
- DOUBLE PRECISION H,Y,Z,HH,YY,A,B,C
- C
- C TEST OF DIMENSION
- IF(NDIM-5)4,1,1
- C
- C TEST OF STEPSIZE
- 1 IF(H)2,5,2
- C
- C PREPARE DIFFERENTIATION LOOP
- 2 HH=.08333333333333333D0/H
- YY=Y(NDIM-4)
- B=HH*(-25.D0*Y(1)+48.D0*Y(2)-36.D0*Y(3)+16.D0*Y(4)-3.D0*Y(5))
- C=HH*(-3.D0*Y(1)-10.D0*Y(2)+18.D0*Y(3)-6.D0*Y(4)+Y(5))
- C
- C START DIFFERENTIATION LOOP
- DO 3 I=5,NDIM
- A=B
- B=C
- C=HH*(Y(I-4)-Y(I)+8.D0*(Y(I-1)-Y(I-3)))
- 3 Z(I-4)=A
- C END OF DIFFERENTIATION LOOP
- C
- C NORMAL EXIT
- IER=0
- 0A=HH*(-YY+6.D0*Y(NDIM-3)-18.D0*Y(NDIM-2)+10.D0*Y(NDIM-1)
- 1 +3.D0*Y(NDIM))
- 0Z(NDIM)=HH*(3.D0*YY-16.D0*Y(NDIM-3)+36.D0*Y(NDIM-2)
- 1 -48.D0*Y(NDIM-1)+25.D0*Y(NDIM))
- Z(NDIM-1)=A
- Z(NDIM-2)=C
- Z(NDIM-3)=B
- RETURN
- C
- C ERROR EXIT IN CASE NDIM IS LESS THAN 5
- 4 IER=-1
- RETURN
- C
- C ERROR EXIT IN CASE OF ZERO STEPSIZE
- 5 IER=1
- RETURN
- END